package org.example.configs;

import org.example.interceptor.MyInterceptorOne;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @Description: 要让拦截器生效，需要将其注册到InterceptorRegistry中。这可以通过实现WebMvcConfigurer接口并重写addInterceptors方法来实现。
 * <p>
 * <p>
 * 当有多个拦截器时，它们的执行顺序取决于注册顺序。先注册的拦截器先执行，后注册的拦截器后执行。
 * 在请求处理过程中，拦截器的preHandle方法按注册顺序执行，
 * 而postHandle和afterCompletion方法按注册顺序的逆序执行。
 */

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptorOne())
                // 在注册拦截器时，可以通过addPathPatterns和excludePathPatterns方法来配置拦截器的拦截规则。
                // addPathPatterns方法用于指定需要拦截的请求路径，
                .addPathPatterns("/**")
                // excludePathPatterns方法用于指定不需要拦截的请求路径。
                .excludePathPatterns("/test/login", "/test/register");
    }
}
